using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._DataManagementTools._Raster._MosaicDataset
{
    /// <summary>
    /// <para>Import Mosaic Dataset Geometry</para>
    /// <para>Modifies the geometry for the footprints, boundary, or seamlines in a mosaic dataset to match those in a feature class.</para>
    /// <para>修改镶嵌数据集中轮廓线、边界线或接缝线的几何，以匹配要素类中的轮廓线、边界线或接缝线。</para>
    /// </summary>    
    [DisplayName("Import Mosaic Dataset Geometry")]
    public class ImportMosaicDatasetGeometry : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ImportMosaicDatasetGeometry()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_mosaic_dataset">
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset whose geometries you want to edit.</para>
        /// <para>要编辑其几何的镶嵌数据集。</para>
        /// </param>
        /// <param name="_target_featureclass_type">
        /// <para>Target Feature Class</para>
        /// <para><xdoc>
        ///   <para>The geometry that you want to change.</para>
        ///   <bulletList>
        ///     <bullet_item>Footprint—The footprint polygons in the mosaic dataset</bullet_item><para/>
        ///     <bullet_item>Seamline—The seamline polygons in the mosaic dataset</bullet_item><para/>
        ///     <bullet_item>Boundary—The boundary polygon in the mosaic dataset</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要更改的几何图形。</para>
        ///   <bulletList>
        ///     <bullet_item>轮廓线 - 镶嵌数据集中的轮廓线面</bullet_item><para/>
        ///     <bullet_item>接缝线 - 镶嵌数据集中的接缝线面</bullet_item><para/>
        ///     <bullet_item>边界 - 镶嵌数据集中的边界面</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// </param>
        /// <param name="_target_join_field">
        /// <para>Target Join Field</para>
        /// <para>The field in the mosaic dataset to use as a basis for the join.</para>
        /// <para>镶嵌数据集中用作连接基础的字段。</para>
        /// </param>
        /// <param name="_input_featureclass">
        /// <para>Input Feature Class</para>
        /// <para>The feature class with the new geometry.</para>
        /// <para>具有新几何的要素类。</para>
        /// </param>
        /// <param name="_input_join_field">
        /// <para>Input Join Field</para>
        /// <para><xdoc>
        ///   <para>The field in the Input Feature Class to use as a basis for the join.</para>
        ///   <para>If the Input Feature Class has more than 1,000 records, add an index on this field by running the Add_Attribute_Index tool. If your mosaic dataset is very large and the join field is not indexed, the tool will take much longer to complete.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入要素类中用作连接基础的字段。</para>
        ///   <para>如果输入要素类的记录超过 1,000 条，则通过运行Add_Attribute_Index工具在此字段上添加索引。如果您的镶嵌数据集非常大，并且连接字段未编制索引，则该工具将需要更长的时间才能完成。</para>
        /// </xdoc></para>
        /// </param>
        public ImportMosaicDatasetGeometry(object _in_mosaic_dataset, _target_featureclass_type_value? _target_featureclass_type, object _target_join_field, object _input_featureclass, object _input_join_field)
        {
            this._in_mosaic_dataset = _in_mosaic_dataset;
            this._target_featureclass_type = _target_featureclass_type;
            this._target_join_field = _target_join_field;
            this._input_featureclass = _input_featureclass;
            this._input_join_field = _input_join_field;
        }
        public override string ToolboxName => "Data Management Tools";

        public override string ToolName => "Import Mosaic Dataset Geometry";

        public override string CallName => "management.ImportMosaicDatasetGeometry";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_mosaic_dataset, _target_featureclass_type.GetGPValue(), _target_join_field, _input_featureclass, _input_join_field, _out_mosaic_dataset];

        /// <summary>
        /// <para>Mosaic Dataset</para>
        /// <para>The mosaic dataset whose geometries you want to edit.</para>
        /// <para>要编辑其几何的镶嵌数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_mosaic_dataset { get; set; }


        /// <summary>
        /// <para>Target Feature Class</para>
        /// <para><xdoc>
        ///   <para>The geometry that you want to change.</para>
        ///   <bulletList>
        ///     <bullet_item>Footprint—The footprint polygons in the mosaic dataset</bullet_item><para/>
        ///     <bullet_item>Seamline—The seamline polygons in the mosaic dataset</bullet_item><para/>
        ///     <bullet_item>Boundary—The boundary polygon in the mosaic dataset</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要更改的几何图形。</para>
        ///   <bulletList>
        ///     <bullet_item>轮廓线 - 镶嵌数据集中的轮廓线面</bullet_item><para/>
        ///     <bullet_item>接缝线 - 镶嵌数据集中的接缝线面</bullet_item><para/>
        ///     <bullet_item>边界 - 镶嵌数据集中的边界面</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _target_featureclass_type_value? _target_featureclass_type { get; set; }

        public enum _target_featureclass_type_value
        {
            /// <summary>
            /// <para>Footprint</para>
            /// <para>Footprint—The footprint polygons in the mosaic dataset</para>
            /// <para>轮廓线 - 镶嵌数据集中的轮廓线面</para>
            /// </summary>
            [Description("Footprint")]
            [GPEnumValue("FOOTPRINT")]
            _FOOTPRINT,

            /// <summary>
            /// <para>Seamline</para>
            /// <para>Seamline—The seamline polygons in the mosaic dataset</para>
            /// <para>接缝线 - 镶嵌数据集中的接缝线面</para>
            /// </summary>
            [Description("Seamline")]
            [GPEnumValue("SEAMLINE")]
            _SEAMLINE,

            /// <summary>
            /// <para>Boundary</para>
            /// <para>Boundary—The boundary polygon in the mosaic dataset</para>
            /// <para>边界 - 镶嵌数据集中的边界面</para>
            /// </summary>
            [Description("Boundary")]
            [GPEnumValue("BOUNDARY")]
            _BOUNDARY,

        }

        /// <summary>
        /// <para>Target Join Field</para>
        /// <para>The field in the mosaic dataset to use as a basis for the join.</para>
        /// <para>镶嵌数据集中用作连接基础的字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Join Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_join_field { get; set; }


        /// <summary>
        /// <para>Input Feature Class</para>
        /// <para>The feature class with the new geometry.</para>
        /// <para>具有新几何的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Feature Class")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_featureclass { get; set; }


        /// <summary>
        /// <para>Input Join Field</para>
        /// <para><xdoc>
        ///   <para>The field in the Input Feature Class to use as a basis for the join.</para>
        ///   <para>If the Input Feature Class has more than 1,000 records, add an index on this field by running the Add_Attribute_Index tool. If your mosaic dataset is very large and the join field is not indexed, the tool will take much longer to complete.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输入要素类中用作连接基础的字段。</para>
        ///   <para>如果输入要素类的记录超过 1,000 条，则通过运行Add_Attribute_Index工具在此字段上添加索引。如果您的镶嵌数据集非常大，并且连接字段未编制索引，则该工具将需要更长的时间才能完成。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Join Field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_join_field { get; set; }


        /// <summary>
        /// <para>Updated Mosaic Dataset</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Mosaic Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_mosaic_dataset { get; set; }


        public ImportMosaicDatasetGeometry SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}